﻿using CleanArchitecture.Core.Interfaces;
using CleanArchitecture.Infrastructure.Entities.System.Notice;

namespace CleanArchitecture.Infrastructure.Interfaces.Notice
{
    public interface ISystemNoticeService
    {
        /// <summary>
        /// Deletes an notice
        /// </summary>
        /// <param name="notice">Attribute</param>
        void DeleteSystemNotice(SystemNotice notice);

        /// <summary>
        /// Gets an SystemNotice
        /// </summary>
        /// <param name="noticeId">SystemNotice identifier</param>
        /// <returns>An attribute</returns>
        SystemNotice GetSystemNoticeById(int noticeId);

        /// <summary>
        /// Inserts an SystemNotice
        /// </summary>
        /// <param name="SystemNotice">notice</param>
        void InsertSystemNotice(SystemNotice notice);

        /// <summary>
        /// Get System SystemNotice by view page
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        IViewPagedList<SystemNotice> GetSystemNoticesByPage(int pageIndex = 0, int pageSize = int.MaxValue);
    }
}
